using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Boa.HD.AccesoDatos.Contratos
{
   public class DataFactory
   {
   #region Constructor
   static DataFactory instance = null;
   public static DataFactory Current
   {
   get
   {
       if (instance == null)
           instance = new DataFactory();
       return instance;
   }
   }
   public T GetInstance<T>(string className)
   {
     return Create<T>("Boa.HD.AccesoDatos.Contexto."+className+",Boa.HD.AccesoDatos.Contexto");
   }
   public static T Create<T>(string classFullName)
   {
       var result = (T)Didsoft.Core.Reflection.InstanciateObjectFromAssembly(classFullName);
       if (result == null)
           throw new NullReferenceException("cannot create instance of type "+classFullName);
       return result;
   }
   #endregion
   public IHD_AsignacionTecnicoProblemaAccesoDatos GetHD_AsignacionTecnicoProblemaAccesoDatos()
   {
       return this.GetInstance<IHD_AsignacionTecnicoProblemaAccesoDatos>("HD_AsignacionTecnicoProblemaAccesoDatos");
   }
   public IHD_DefinicionProblemaAccesoDatos GetHD_DefinicionProblemaAccesoDatos()
   {
       return this.GetInstance<IHD_DefinicionProblemaAccesoDatos>("HD_DefinicionProblemaAccesoDatos");
   }
   public IHD_EstadoTrabajoAccesoDatos GetHD_EstadoTrabajoAccesoDatos()
   {
       return this.GetInstance<IHD_EstadoTrabajoAccesoDatos>("HD_EstadoTrabajoAccesoDatos");
   }
   public IHD_HistoriaProblemaAsistidoAccesoDatos GetHD_HistoriaProblemaAsistidoAccesoDatos()
   {
       return this.GetInstance<IHD_HistoriaProblemaAsistidoAccesoDatos>("HD_HistoriaProblemaAsistidoAccesoDatos");
   }
   public IHD_PrioridadTecnicaAccesoDatos GetHD_PrioridadTecnicaAccesoDatos()
   {
       return this.GetInstance<IHD_PrioridadTecnicaAccesoDatos>("HD_PrioridadTecnicaAccesoDatos");
   }
   public IHD_SolicitudAsistenciaAccesoDatos GetHD_SolicitudAsistenciaAccesoDatos()
   {
       return this.GetInstance<IHD_SolicitudAsistenciaAccesoDatos>("HD_SolicitudAsistenciaAccesoDatos");
   }
   public IHD_SolucionRapidaAccesoDatos GetHD_SolucionRapidaAccesoDatos()
   {
       return this.GetInstance<IHD_SolucionRapidaAccesoDatos>("HD_SolucionRapidaAccesoDatos");
   }
   public IHD_SolucionRapidaMediaAccesoDatos GetHD_SolucionRapidaMediaAccesoDatos()
   {
       return this.GetInstance<IHD_SolucionRapidaMediaAccesoDatos>("HD_SolucionRapidaMediaAccesoDatos");
   }
   public IHD_TecnicoAccesoDatos GetHD_TecnicoAccesoDatos()
   {
       return this.GetInstance<IHD_TecnicoAccesoDatos>("HD_TecnicoAccesoDatos");
   }

   public IDtoBOAPersonal GetBOAPersonalAccesoDatos()
   {
       return this.GetInstance<IDtoBOAPersonal>("BOAPersonalAccesoDatos");
   }

   public IHD_NivelJerarquicoAccesoDatos GetHD_NivelJerarquicoAccesoDatos()
   {
       return this.GetInstance<IHD_NivelJerarquicoAccesoDatos>("HD_NivelJerarquicoAccesoDatos");
   }
   public IHD_NivelJerarquicoItemAccesoDatos GetHD_NivelJerarquicoItemAccesoDatos()
   {
       return this.GetInstance<IHD_NivelJerarquicoItemAccesoDatos>("HD_NivelJerarquicoItemAccesoDatos");
   }
   public IHD_SeveridadPrioridadConfigAccesoDatos GetHD_SeveridadPrioridadConfigAccesoDatos()
   {
       return this.GetInstance<IHD_SeveridadPrioridadConfigAccesoDatos>("HD_SeveridadPrioridadConfigAccesoDatos");
   }
   public IHD_SeveridadPrioridadConfigItemAccesoDatos GetHD_SeveridadPrioridadConfigItemAccesoDatos()
   {
       return this.GetInstance<IHD_SeveridadPrioridadConfigItemAccesoDatos>("HD_SeveridadPrioridadConfigItemAccesoDatos");
   }
   public IHD_SeveridadAccesoDatos GetHD_SeveridadAccesoDatos()
   {
       return this.GetInstance<IHD_SeveridadAccesoDatos>("HD_SeveridadAccesoDatos");
   }

   public ISubePrioridadData GetSubePrioridadData()
   {
       return this.GetInstance<ISubePrioridadData>("SubePrioridadData");
   }

   #region Reportes

   public IReporteAccesoDatos GetReporteAccesoDatos()
   {
       return this.GetInstance<IReporteAccesoDatos>("ReporteAccesoDatos");
   }

   #endregion


   }
}

